Fix VM.get_power_state API. On the xend side an integer representation of the power...
authorjfehlig@jfehlig2.provo.novell.com <jfehlig@jfehlig2.provo.novell.com>
Thu, 14 Dec 2006 01:06:48 +0000 (18:06 -0700)
committerjfehlig@jfehlig2.provo.novell.com <jfehlig@jfehlig2.provo.novell.com>
Thu, 14 Dec 2006 01:06:48 +0000 (18:06 -0700)
On the c-bindings side the marshalling code converts the string representation to an enum value.  A subsequent attempt to convert the enum from a string to an enum was causing a seg fault.

Signed-off-by: Jim Fehlig <jfehlig@novell.com>
tools/libxen/include/xen_internal.h
tools/libxen/src/xen_vm.c
tools/python/xen/xend/XendAPI.py

index 043c4053f81432a229c52884bc4ca5b82b520bf5..324fb8842858e1d6cede8ae6b850cdf31ec5d376 100644 (file)
@@ -128,7 +128,6 @@ xen_enum_lookup_(xen_session *session, const char *str,
     xen_enum_lookup_(session__, str__, lookup_table__,  \
                      sizeof(lookup_table__) /           \
                      sizeof(lookup_table__[0]))         \
-                                                        \
 
 #define XEN_ALLOC(type__)                       \
 type__ *                                        \
index 1914b86959a82267ed9f83a8b44fd2125f3bbbb8..9d96a0c233037ef74ecac012d5b04519abd55b6e 100644 (file)
@@ -324,9 +324,7 @@ xen_vm_get_power_state(xen_session *session, enum xen_vm_power_state *result, xe
         };
 
     abstract_type result_type = xen_vm_power_state_abstract_type_;
-    char *result_str = NULL;
     XEN_CALL_("VM.get_power_state");
-    *result = xen_vm_power_state_from_string(session, result_str);
     return session->ok;
 }
 
index 62b36a738b3d00acf2698d6d62575d3bb10935c2..c43ae75976b40fb8554d6b95aec50d76a940d94e 100644 (file)
@@ -669,7 +669,7 @@ class XendAPI:
     # attributes (ro)
     def VM_get_power_state(self, session, vm_ref):
         dom = XendDomain.instance().get_vm_by_uuid(vm_ref)
-        return xen_api_success(dom.state)
+        return xen_api_success(dom.get_power_state())
     
     def VM_get_resident_on(self, session, vm_ref):
         return xen_api_success(XendNode.instance().uuid)